package com.example.auth.mapper;

import com.example.auth.entity.SysRole;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface SysRoleMapper {

    /**
     * 插入
     *
     * @param sysRole 角色
     * @return 影响行数
     */
    int insert(SysRole sysRole);

    /**
     * 根据主键删除
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 根据主键更新
     *
     * @param sysRole 角色
     * @return 影响行数
     */
    int updateByPrimaryKey(SysRole sysRole);

    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 角色
     */
    SysRole selectByPrimaryKey(Long id);

    /**
     * 查询列表
     *
     * @param sysRole 角色
     * @return 角色列表
     */
    List<SysRole> selectList(SysRole sysRole);

    /**
     * 查询角色权限
     *
     * @param id 角色id
     * @return 角色权限
     */
    Long[] selectChecks(Long id);

    /**
     * 删除角色权限
     *
     * @param rid 角色id
     */
    void deleteSysRoleMenuByRid(Long rid);

    /**
     * 插入角色权限
     *
     * @param rid  角色id
     * @param mids 权限id列表
     * @return 影响行数
     */
    int insertSysRoleMenu(Long rid, List<Long> mids);

    /**
     * 根据权限id查询角色id
     *
     * @param mids 权限id列表
     * @return 角色id列表
     */
    List<Long> selectByMenuIds(List<Long> mids);

    /**
     * 查询角色数量
     *
     * @return 角色数量
     */
    int selectCount();
}
